package com.itheima.leetcode.od.b.string;

/**
 * (A卷,100分)- 货币单位换算（Java & JS & Python）
 * <p>
 * 题目描述
 * <p>
 * 记账本上记录了若干条多国货币金额，需要转换成人民币分（fen），汇总后输出。
 * 每行记录一条金额，金额带有货币单位，格式为数字+单位，可能是单独元，或者单独分，或者元与分的组合。
 * 要求将这些货币全部换算成人民币分（fen）后进行汇总，汇总结果仅保留整数，小数部分舍弃。
 * 元和分的换算关系都是1:100，如下：
 * <p>
 * 1CNY=100fen（1元=100分）
 * 1HKD=100cents（1港元=100港分）
 * 1JPY=100sen（1日元=100仙）
 * 1EUR=100eurocents（1欧元=100欧分）
 * 1GBP=100pence（1英镑=100便士）
 * <p>
 * 汇率表如下：
 * <p>
 * CNY	JPY	HKD	EUR	GBP
 * 100	1825	123	14	12
 * 即：100CNY = 1825JPY = 123HKD = 14EUR = 12GBP
 * <p>
 * 输入描述
 * <p>
 * 第一行输入为N，N表示记录数。0<N<100
 * <p>
 * 之后N行，每行表示一条货币记录，且该行只会是一种货币。
 * <p>
 * 输出描述
 * <p>
 * 将每行货币转换成人民币分（fen）后汇总求和，只保留整数部分。
 * 输出格式只有整数数字，不带小数，不带单位。
 * <p>
 * 用例
 * <p>
 * 输入	1
 * 100CNY
 * 输出	10000
 * 说明	100CNY转换后是10000fen，所以输出结果为10000
 * <p>
 * 输入	1
 * 3000fen
 * 输出	3000
 * 说明	3000fen，结果就是3000
 * <p>
 * 输入	1
 * 123HKD
 * 输出	10000
 * 说明	HKD与CNY的汇率关系是123:100，所以换算后，输出结果为10000
 * <p>
 * 输入	2
 * 20CNY53fen
 * 53HKD87cents
 * 输出	6432
 * 说明	20元53分 + 53港元87港分，换算成人民币分后汇总，为6432
 * <p>
 * 题目解析
 * <p>
 * 纯逻辑题。
 */
public class CurrencyConversion {
    public static void main(String[] args) {
        /*Scanner in = new Scanner(System.in);
        double money = 0.0;
        int count = Integer.parseInt(in.nextLine());
        for (int i = 0; i < count; i++) {
            String line = in.nextLine();
            String[] split = line.split("\\d");
            for (String type : split) {
                if(!type.isEmpty()){
                    String num = line.substring(0, line.indexOf(type));
                    money += exchange(type, Double.parseDouble(num));
                    line = line.substring(line.indexOf(type) + type.length());
                }
            }
        }*/

        double money = 0.0;
        String[] array = "20CNY53fen 53HKD87cents".split(" ");
        int count = array.length;
        for (int i = 0; i < count; i++) {
            String line = array[0];
            String[] split = line.split("\\d");
            for (String type : split) {
                if (!type.isEmpty()) {
                    String num = line.substring(0, line.indexOf(type));
                    money += exchange(type, Double.parseDouble(num));
                    line = line.substring(line.indexOf(type) + type.length());
                }
            }
        }
        System.out.println(Math.floor(money));
    }

    private static double exchange(String type, double num) {
        switch (type) {
            case "CNY":
                return num * 100;
            case "fen":
                return num;
            case "JPY":
                return num / 1825 * 10000;
            case "sen":
                return num / 1825 * 100;
            case "HKD":
                return num / 123 * 10000;
            case "cents":
                return num / 123 * 100;
            case "EUR":
                return num / 14 * 10000;
            case "eurocents":
                return num / 14 * 100;
            case "GBP":
                return num / 12 * 10000;
            case "pence":
                return num / 12 * 100;
        }
        return 0;
    }

}